草庐IT

TypeScript 运算符

全部标签

C++ 运算符 [] 魔法

这个问题在这里已经有了答案:C++array[index]vsindex[array][duplicate](4个答案)关闭3年前。我遇到了一种吸引数组元素的奇怪方式,我认为这是一个错误,但它确实有效。你能解释一下它是如何工作的吗?#includeintmain(){inta[]={1,2,3,4};std::cout

c++ - 重载 << 运算符和递归

我尝试了以下代码:#includeusingstd::cout;usingstd::ostream;classX{public:friendostream&operator当我编译并运行它时,它符合预期;一个无限循环。如果我删除友元函数中的cout语句,递归就不会发生。为什么会这样? 最佳答案 Optimizer决定您所有剩余的事件都没有效果,并将其优化掉。对与错是另一回事。特别是:Xx;创建空对象“x”cout调用:return(os追加空对象;编译器注意到自上次调用以来“os”没有增长,并且没有显示任何进一步这样做的promis

c++ - 指针运算符的正式名称

在指针上下文中,运算符*和&的正式名称是什么?它们似乎经常分别被称为解引用运算符和寻址运算符,但不幸的是,标准中关于一元运算符的部分没有命名它们。我真的不想再命名&address-of了,因为&返回一个指针,而不是地址。(见下文)标准对此非常明确:Theresultoftheunary&operatorisapointertoitsoperand.Symmetry建议命名为&referenceoperator这有点不幸,因为它与C++中的引用发生冲突。&返回一个指针这一事实表明指针运算符。是否有任何官方消息来源可以证实这些(或其他)命名?指针与地址指针是一种语言机制,而地址是一种实现细

c++ - C++ 中的 boost::bind 和 << 运算符

我想绑定(bind)for_each(begin,end,boost::bind(&operator不幸的是它不起作用:Error1errorC2780:'boost::_bi::bind_t::type,boost::_mfi::dm,_bi::list_av_1::type>boost::bind(MT::*,A1)':expects2arguments-3providedc:\source\repository\repository\positions.cpp90我做错了什么? 最佳答案 相反,您可以尝试boost.lambd

Java 数学运算与条件语句全解析

JavaMathJava的Math类拥有许多方法,允许您在数字上执行数学任务。常用方法:Math.max(x,y):找到x和y的最大值Math.min(x,y):找到x和y的最小值Math.sqrt(x):返回x的平方根Math.abs(x):返回x的绝对值Math.random():返回一个介于0.0和1.0之间的随机数示例://找到最大值intmax=Math.max(5,10);System.out.println("最大值:"+max);//输出:10//找到最小值intmin=Math.min(5,10);System.out.println("最小值:"+min);//输出:5//

c++ - 重载后增量运算符

MyClassMyClass::operator++(int){return++(*this);}那是我写的代码。我工作正常,但所有教程都说我必须创建一个临时对象并将其返回:MyClassMyClass::operator++(int){MyClasstmp=*this;++(*this);returntmp;}请告诉我哪种方式最好? 最佳答案 第一个版本是错误的,因为它返回了新值。后增量运算符应该返回旧值。 关于c++-重载后增量运算符,我们在StackOverflow上找到一个类似的

c++ - 为优先级队列重载运算符<

我正在尝试为我制作的类创建一个优先级队列-std::priority_queuenodes;我像这样重载了Position中的boolPosition::operator但是,每当我尝试编译时,我都会收到此错误消息,提示error:nomatchfor‘operator我在这里错过了什么?感谢您的帮助。 最佳答案 关系运算符不应更改操作数。尝试:boolPosition::operator我的猜测是__x或__y(或两者)都是const。如果__x是const,则不能调用非常量成员函数,也不能将__y作为传递right参数,如果__

c++ - 为什么我不能在运算符重载中使用两个指针?

这很烦人,我可以用这些参数/返回值编写一个函数,但为什么我不能定义一个运算符来执行此操作?-edit-我实际上是在尝试重载以下仅供引用。Frommsdn//C2803.cpp//compilewith:/cclassA{};booloperatorgcc错误error:‘booloperator 最佳答案 因为每个用户定义的运算符重载都需要至少一个用户定义的类型作为参数。点不是用户定义的类型。C++03标准,§13.5[over.oper]p6:Anoperatorfunctionshalleitherbeanon-staticme

c++ - C++中auto_ptr的指针运算

我正在阅读C++STL中auto_ptr的实现。我看到像->和*这样的指针上通常需要的操作被重载了,因此它们保留了相同的含义。但是,指针运算是否适用于自动指针?假设我有一个自动指针数组,我希望能够执行类似array+1的操作,并希望获得数组第二个元素的地址。我如何获得它?我对这个要求没有任何实际应用,只是出于好奇。 最佳答案 auto_ptr只能指向单个元素,因为它使用delete(而不是delete[])来删除它的指针。所以这里没有用到指针运算。如果您需要一个对象数组,通常的建议是改用std::vector。

c++ - C++中的两个运算符同时重载

我想像数组一样表示我的对象。我的意思是程序员可以在他的代码中写我的对象[3]=2在后面(在myobject代码中)根本没有数组,它只是表示。所以我需要同时重载[]和=。如何做到这一点?谢谢你抱歉我的英语不好。 最佳答案 operator[]应该返回对您尝试修改的对象的引用。它可能是某种元对象,重载operator=以对主对象做任何您想做的事情。编辑:由于OP澄清了问题,有一种方法可以做到这一点。看这里:#include#includeint&func(std::vector&a){returna[3];}intmain(){std: